home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Audio / Patchmix / XWindowsSource / xevent.c < prev    next >
C/C++ Source or Header  |  1992-03-28  |  4KB  |  169 lines

  1. static char rcsid[] = "$Header: xevent.c,v 1.5 91/02/13 09:46:53 mara Exp $";
  2.  
  3. /*  xevent.c
  4.  *
  5.  *  Written by Mara Helmuth
  6.  *
  7.  *  Description: X graphics functions in C
  8.  *     called by graphics class
  9.  *    for Cmix X graphical interface
  10.  * 
  11.  *  $Log:    xevent.c,v $
  12.  * Revision 1.5  91/02/13  09:46:53  mara
  13.  * panel fixes
  14.  * 
  15.  * Revision 1.4  90/09/08  12:50:21  mara
  16.  * side panel
  17.  * 
  18.  * Revision 1.3  90/09/05  22:11:23  mara
  19.  * +,-,*,/ options added
  20.  * 
  21.  * Revision 1.2  90/09/02  18:19:38  mara
  22.  * NeXT fixes
  23.  * 
  24.  * Revision 1.1  90/08/27  17:10:03  mara
  25.  * Initial revision
  26.  * 
  27.  */
  28.  
  29. #include "plus.h"
  30.  
  31. int event_loop()
  32. {
  33.     XEvent event;
  34.  
  35.     for (;;) {
  36.         XNextEvent(dpy, &event);
  37.         if (lxt_event(&event))
  38.             continue;
  39.         switch (event.type) {
  40.         case MotionNotify:
  41.             pm_select((XPointerMovedEvent *) &event);
  42.             break;
  43.         case ButtonPress:
  44.             bp_select((XButtonPressedEvent *) &event);
  45.             break;
  46.         default:
  47.             break;
  48.         }
  49.     }
  50.  
  51. }
  52.  
  53. pm_select(XPointerMovedEvent *event)
  54. {
  55.     int x, y;
  56.  
  57.     x= *((int *) canvas_get(canvas, LXC_XOFFSET));
  58.     y= *((int *) canvas_get(canvas, LXC_YOFFSET));
  59.  
  60.     if (event->state & Button1Mask)
  61.         ugen_select(event->x+x, event->y+y);
  62. }
  63.  
  64. bp_select(XButtonPressedEvent *event)
  65. {
  66.     int vx, vy;
  67.     int fracbar = MFRAME_WIDTH/header_spaces;
  68.     int xloc = event->x;
  69.     int yloc = event->y;
  70.  
  71.     vx= *((int *) canvas_get(canvas, LXC_XOFFSET));
  72.     vy= *((int *) canvas_get(canvas, LXC_YOFFSET));
  73.  
  74.     if(event->window == canvas_win) {
  75.         if(xloc+vx < 40 && yloc+vy < 60) {
  76.             mbar_setting = UGEN_SELECT;
  77.             if(ugen[ugen_no].made)
  78.                 ugen_no++;
  79.             ugen[ugen_no].type = ADD;
  80.             printf("add selected ugen_no = %d\n",ugen_no);
  81.             first_add = 1;
  82.         }
  83.         else if(xloc+vx < 40 && yloc+vy >= 60 && yloc+vy < 120) {
  84.             mbar_setting = UGEN_SELECT;
  85.             if(ugen[ugen_no].made)
  86.                 ugen_no++;
  87.             ugen[ugen_no].type = SUBTRACT;
  88.             printf("sub selected ugen_no = %d\n",ugen_no);
  89.             first_sub = 1;
  90.         }
  91.         else if(xloc+vx < 40 && yloc+vy >= 120 && yloc+vy < 180) {
  92.             mbar_setting = UGEN_SELECT;
  93.             if(ugen[ugen_no].made)
  94.                 ugen_no++;
  95.             ugen[ugen_no].type = MULTIPLY;
  96.             printf("mult selected ugen_no = %d\n",ugen_no);
  97.             first_mult = 1;
  98.         }
  99.         else if(xloc+vx < 40 && yloc+vy >= 180 && yloc+vy < 240) {
  100.             mbar_setting = UGEN_SELECT;
  101.             if(ugen[ugen_no].made)
  102.                 ugen_no++;
  103.             ugen[ugen_no].type = DIVIDE;
  104.             printf("divide selected ugen_no = %d\n",ugen_no);
  105.             first_div = 1;
  106.         }
  107.         else if(xloc+vx < 40 && yloc+vy > 240 && yloc+vy < 290 && first_out) {
  108.             mbar_setting = UGEN_SELECT;
  109.             if(ugen[ugen_no].made)
  110.                 ugen_no++;
  111.             printf("ugen %d\n",(ugen[ugen_no].type = OUT));
  112.             ugen[ugen_no].type = OUT;
  113.         }
  114.         else {
  115.             switch (event->button) {
  116.             case Button1: 
  117.                 switch(mbar_setting) {
  118.                 case UGEN_SELECT:
  119.                     printf("button1 UGEN_SELECT\n");
  120.                     ugen_select(event->x+vx, event->y+vy);
  121.                     break;
  122.                 case UGEN_CONVERT:
  123.                     printf("button1 UGEN_CONVERT\n");
  124.                     break;
  125.                 case PARAM_SET:
  126.                     printf("button1 PARAM_SET\n");
  127.                     set_params(event->x+vy, event->y+vy);
  128.                     break;
  129.                 default:
  130.                     printf("button1 no mbar_setting\n");
  131.                     break;    
  132.                 }
  133.                 break;
  134.             case Button2: // doesn't work on NeXT - use menubar
  135.                 printf("button2\n");
  136.                 set_params(event->x+vy, event->y+vy);
  137.                 break;
  138.             case Button3:
  139.                 printf("button3\n");
  140.                 connector(event->x+vx, event->y+vy); 
  141.                 break;
  142.             }
  143.         }
  144.     }
  145.     else if(event->window == mbar_win) {
  146.         if(xloc <= fracbar) {
  147.             mbar_setting = UGEN_SELECT;
  148.             menu_show(generator_menu, event);
  149.         }
  150.         else if(xloc<=2*fracbar) {
  151.             mbar_setting = UGEN_SELECT;
  152.             menu_show(processor_menu,event);
  153.         }
  154.         else if(xloc<=3*fracbar) {
  155.             printf("ugen convert\n");
  156.             mbar_setting = UGEN_CONVERT;
  157.             menu_show(converter_menu,event);
  158.         }
  159.         else if(xloc<=4*fracbar) {
  160.             printf("parameter to be set\n");
  161.             mbar_setting = PARAM_SET;
  162.         }
  163.             else if(xloc<=5*fracbar) menu_show(connect_menu,event);
  164.         else if(xloc<=6*fracbar) menu_show(options_menu,event);
  165.         else if(xloc<=7*fracbar) menu_show(help_menu,event);
  166.  
  167.     }
  168. }
  169.